﻿using Dlls;
using Dominio;
using Persistencia;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Views.Cadastros
{
    /// <summary>
    /// Interaction logic for frmCadastrarCaixaBanco.xaml
    /// </summary>
    public partial class frmCadastrarCaixaBanco : Window
    {
        private int codigoParaAlterarOuDeletar = 0;
        private CaixaBancoDLL caixaBancoDLL;
        private CaixaBanco caixaBanco;

        public frmCadastrarCaixaBanco(int codigo)
        {
            InitializeComponent();
            caixaBancoDLL = new CaixaBancoDLL();
            caixaBanco = new CaixaBanco();
         
            if (codigo != 0)
            {
                codigoParaAlterarOuDeletar = codigo;
            }
        }

        public void InsertOrUpdate(object sender, RoutedEventArgs e)
        {
            try
            {
             if (txtCodigo.Text != "")
                {
              if (cbxTipoConta.SelectedIndex == 0)
                {
                    caixaBanco.Tipo = "Caixa";
                }
                else if (cbxTipoConta.SelectedIndex == 1)
                {
                    caixaBanco.Tipo = "Banco";
                }
                    caixaBanco.NumeroConta = txtNumeroConta.Text;
                    caixaBanco.LimiteEspecial = decimal.Parse(txtLimiteEspecial.Text.ToString());
                    caixaBanco.NomeCaixaBanco = txtNomeCaixaBanco.Text;
                    caixaBanco.CodAgencia = int.Parse(txtCodAgencia.Text.ToString());
                    caixaBanco.Caixa = int.Parse(txtCaixa.Text.ToString());
                    caixaBanco.Tipo = cbxTipoConta.Text.ToString();
                    caixaBanco.Operacao = int.Parse(txtOperacao.Text);
                    if (caixaBanco.EmiteBoleto == true)
                    {
                        caixaBanco.Cedente = "";
                        caixaBanco.NossoNumero = "";
                        caixaBanco.CPFCNPJ = "";
                    }
                    caixaBancoDLL.Update(codigoParaAlterarOuDeletar, caixaBanco);
                    MessageBox.Show(lbBancoCaixa.Content + "alterado com sucesso");
                    Classes.LimpaCampos.reset(0, this);
                }
                else
                {
                    caixaBanco.NumeroConta = txtNumeroConta.Text;
                    caixaBanco.LimiteEspecial = decimal.Parse(txtLimiteEspecial.Text.ToString());
                    caixaBanco.NomeCaixaBanco = txtNomeCaixaBanco.Text;
                    caixaBanco.CodAgencia = int.Parse(txtCodAgencia.Text.ToString());
                    caixaBanco.Caixa = int.Parse(txtCaixa.Text.ToString());
                    caixaBanco.Tipo = cbxTipoConta.Text.ToString();
                    caixaBanco.Operacao = int.Parse(txtOperacao.Text);
                    if (caixaBanco.EmiteBoleto == true)
                    {
                        caixaBanco.Cedente = "";
                        caixaBanco.NossoNumero = "";
                        caixaBanco.CPFCNPJ = "";
                    }
                    caixaBancoDLL.Insert(caixaBanco);
                    MessageBox.Show(lbBancoCaixa.Content + " cadastrado com sucesso");
                    Classes.LimpaCampos.reset(0, this);
                }
             caixaBanco = new CaixaBanco();
           }
            catch (Exception)
            {
                MessageBox.Show("Erro na alteração/inclusão do registro, favor verificar os campos antes de continuar");
            }
        }

        private void EditarCaixaBanco(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodigo.Text != "")
                {
                    codigoParaAlterarOuDeletar = int.Parse(txtCodigo.Text.ToString());
                    if (codigoParaAlterarOuDeletar != 0)
                    {
                        CaixaBanco caixaBanco = caixaBancoDLL.getCaixaBanco(codigoParaAlterarOuDeletar);

                        if (caixaBanco != null)
                        {
                            txtCodigo.Text = caixaBanco.Codigo.ToString();
                            txtNumeroConta.Text = caixaBanco.NumeroConta.ToString();
                            txtLimiteEspecial.Text = caixaBanco.LimiteEspecial.ToString();
                            txtNomeCaixaBanco.Text = caixaBanco.NomeCaixaBanco;
                            txtCodAgencia.Text = caixaBanco.CodAgencia.ToString();
                            txtCaixa.Text = caixaBanco.Caixa.ToString();
                            cbxTipoConta.Text = caixaBanco.Tipo.ToString();
                            txtOperacao.Text = caixaBanco.Operacao.ToString();
                            if (caixaBanco.EmiteBoleto == true)
                            {
                                
                            }
                        }
                        else
                        {
                            MessageBox.Show(lbBancoCaixa.Content+" não encontrada.");
                        }
                    }
                }
                else
                {
                    frmConsultaPadrao consultaPadrao = new frmConsultaPadrao("Caixa Banco");
                    consultaPadrao.Owner = this;
                    consultaPadrao.Show();
                }
            }
        }

        public void Novo(object sender, RoutedEventArgs e)
        {
            Classes.LimpaCampos.reset(0, this);
        }

        public void Delete(object sender, RoutedEventArgs e)
        { 
        
        }

        public void ExibirCamposBanco(object sender,SelectionChangedEventArgs e)
        {
            if (cbxTipoConta.SelectedIndex == 0)
            {
                lbNumeroConta.Visibility = Visibility.Hidden;
                txtNumeroConta.Visibility = Visibility.Hidden;
                lbOperacao.Visibility = Visibility.Hidden;
                txtOperacao.Visibility = Visibility.Hidden;
                lbBancoCaixa.Content = "CAIXA";
                lbLimiteEspecial.Visibility = Visibility.Hidden;
                txtLimiteEspecial.Visibility = Visibility.Hidden;
                lbCodAgencia.Visibility = Visibility.Hidden;
                txtCodAgencia.Visibility = Visibility.Hidden;
            }
            else if (cbxTipoConta.SelectedIndex == 1)
            {
                lbNumeroConta.Visibility = Visibility.Visible;
                txtNumeroConta.Visibility = Visibility.Visible;
                lbOperacao.Visibility = Visibility.Visible;
                txtOperacao.Visibility = Visibility.Visible;
                lbBancoCaixa.Content = "BANCO";
                lbLimiteEspecial.Visibility = Visibility.Visible;
                txtLimiteEspecial.Visibility = Visibility.Visible;
                lbCodAgencia.Visibility = Visibility.Visible;
                txtCodAgencia.Visibility = Visibility.Visible;
            }

        }

        private bool ValidaCaixaBanco()
        {
           bool valido = false;
            if (cbxTipoConta.SelectedItem == "Banco")
            {
                if (txtCaixa.Text == "" || txtNomeCaixaBanco.Text == "")
                {
                    valido = true;
                }
       
            }
            else if ((cbxTipoConta.SelectedIndex == 1))
            {
                //if (txtCodigo.Text,txtAgCaixa.Text!='' ||)
                //{
                    
                //}
            }
            return valido;
        }

    }
}
